#include "Delay.h"
#include <QDebug>

Delay::Delay(QObject *parent)
    : QObject(parent) {
}

void Delay::waitForWorkComplete(int intervalTime, std::function<bool()> isPlcResetComplete) {
    // 延时等待并检查 PLC 是否复位完成
    QEventLoop loop;
    QTimer timer;
    timer.setInterval(intervalTime); // 设置检查间隔，例如每秒检查一次

    QObject::connect(&timer, &QTimer::timeout, [&]() {
        bool flag = isPlcResetComplete();
        // 检查 PLC 是否复位完成
        if (flag) {
            loop.quit(); // 退出事件循环
        }
        qDebug() << "finishFlag:" << flag;
    });

    timer.start();
    loop.exec(); // 进入事件循环，等待 PLC 复位完成
}

void Delay::waitForTime(int finishTime, int intervalTime) {
    // 延时等待并检查 PLC 是否复位完成
    QEventLoop loop;
    QTimer timer;
    timer.setInterval(intervalTime); // 设置检查间隔，例如每秒检查一次

    QObject::connect(&timer, &QTimer::timeout, [&]() {
        static int count = 0;
        // 检查 PLC 是否复位完成
        if (++count >= finishTime) {
            loop.quit(); // 退出事件循环
        }
        qDebug() << "count:" << count;
        count %= finishTime;
    });

    timer.start();
    loop.exec(); // 进入事件循环，等待 PLC 复位完成
}
